package qf.index;

import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.util.NumberUtil;
import cn.hutool.db.Db;
import cn.hutool.db.Entity;
import com.alibaba.fastjson.JSONObject;

import java.sql.SQLException;
import java.text.SimpleDateFormat;
import java.util.*;
import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.atomic.AtomicInteger;

public class Fusion {

    /**
     * 数据融合，将七张表的数据，融合到一起，因鲍工的basicCoreTable没有wos、pmid、cscd这三张表的自增主键，因此先通过Map作对应，然后再获取期刊关联表中的影响因子等数据，以及参文和引文的质量，一起插入到最终的结果表（summaryTable）。
     * 贾新志 2024.08.20
     */
    public static void main(String[] args) throws SQLException {
        SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        System.out.println(format.format(new Date()) + " 程序开始了~~~");
        String newDataName = "scholar_25_02.";
        String summaryTable = newDataName + "unified_search_summary_0308";
        String spiderCnCoreTable = newDataName + "spider_cn_core";
        String spiderCnKiAnalysisTable = newDataName + "spider_cnki_analysis";
        String spiderCqVipAnalysisTable = newDataName + "spider_cqvip_analysis";
        String spiderWanFangAnalysisTable = newDataName + "spider_wanfang_analysis";
        String spiderYiiGleAnalysisTable = newDataName + "spider_yiigle_analysis";
        String pmArticleTable = newDataName + "spider_pubmed_vip_extend";
        String utArticleTable = newDataName + "spider_tb_true_92007022_1125";
        String jourMergeTable = newDataName + "basic_jour_merge";
        String quotaTable = newDataName + "basic_core_paper_quota";
        String basicCoreTable = newDataName + "basic_core_paper";
        String wordAndCodeSetMapTable = newDataName + "word_and_code_set_map";
        String meshTable = newDataName + "help_mesh_tree_gcr_0615";
        String fullAbbrKeyWordTable = newDataName + "full_abbr_key_word_0124";
        String keyWordSumTable = newDataName + "key_word_sum_0124";
        String htLocationChinaTable = newDataName + "ht_location_china";
        String basicHospUnivDeptTable = newDataName + "basic_hosp_or_univ_dept";
        String hospUnivInfoSumTable = newDataName + "hosp_or_univ_info_sum";
        String summaryTypeTable = newDataName + "unified_search_summary_0120_type";
        String citationTable = newDataName + "basic_core_paper_citation";
        String referenceTable = newDataName + "basic_core_paper_reference";
        String doiTable = newDataName + "doi_location_20230112";
        String doiAddTable = newDataName + "doi_location_20230112_add";
        String ncTextTable = "html.nc_text_table";

        int onePageNum = 1000;
//        String limit = "";
        String limit = " limit 200";

        dataFusion(spiderCnCoreTable, pmArticleTable, utArticleTable, summaryTable, basicCoreTable, quotaTable, jourMergeTable, limit, onePageNum);
        limit = "";

        // 词（药物，数字代号：1; 基因，数字代号：2; 通路，数字代号：3; 疾病，数字代号：4）和code（1，2，3，4）代码集合。此Map需要从事先准备的表wordAndCodeSetMapTable中读取。
        String field = "word`,`code_set";
        Map<String, Set<Integer>> wordAndCodeSetMap = Drug.getWordAndCodeSetMap(wordAndCodeSetMapTable, "id", field, limit);
        System.out.println(format.format(new Date()) + " 数据插入⑴ wordAndCodeSetMap.size():" + wordAndCodeSetMap.size());

        field = "UT`,`DE`,`TI`,`AB`,`J9`,`SO`,`PM`,`PY`,`C1`,`RP`,`PT`,`DT`,`DI`,`VL`,`IS`,`BP`,`EP`,`FP`,`AB`,`AF`,`LA`,`WC`,`ID`,`EM";
        ReadUt.readUt(utArticleTable, onePageNum, limit, "pid", field, true, 10, summaryTable, wordAndCodeSetMap);
        System.out.println(format.format(new Date()) + " 数据插入⑵ 表名: " + utArticleTable + " 结束了。");

        field = "pmid`,`keyword`,`article_title`,`ab_text`,`jour`,`pub_year`,`author_extend`,`pts`,`med_nlm_id`,`pub_date`,`doi`,`volume`,`issue`,`pages`,`mesh_headingy`,`lan";
        ReadPm.readPm(pmArticleTable, onePageNum, limit, "id", field, true, 10, summaryTable, wordAndCodeSetMap);
        System.out.println(format.format(new Date()) + " 数据插入⑶ 表名: " + pmArticleTable + " 结束了。");

        field = "UT`,`DE`,`TI`,`AB`,`PY`,`Z3`,`SO`,`DI`,`VL`,`IS`,`BP`,`EP`,`DT`,`Z2`,`Z6`,`FU`,`Z5`,`Z1`,`Z4`,`EM`,`LA`,`SC";
        ReadCd.readCd(spiderCnCoreTable, onePageNum, limit, "id", field, true, 10, summaryTable, wordAndCodeSetMap);
        System.out.println(format.format(new Date()) + " 数据插入⑷ 表名: " + spiderCnCoreTable + " 结束了。");

        // dataIdAndAidMap.size(): 800009
        field = "keywordsen`,`arttitleen`,`artabstracten`,`artpubyear`,`journalcn`,`journalen`,`artdoi`,`vol`,`issue`,`startpage`,`endpage`,`doctype`,`authornames`,`artorgannames`,`funds`,`artificialkeywords`,`arttitle`,`artabstract`,`artabstract`,`subjectnames";
        ReadZh.readZh(spiderYiiGleAnalysisTable, onePageNum, limit, "pid", field, true, 10, summaryTable, wordAndCodeSetMap);
        System.out.println(format.format(new Date()) + " 数据插入⑸ 表名: " + spiderYiiGleAnalysisTable + " 结束了。");

        field = "year`,`journal`,`doi`,`page`,`issue`,`author`,`auemorg`,`fund`,`title`,`abs`,`entitle`,`keyword`,`subject";
        ReadZw.readZw(spiderCnKiAnalysisTable, onePageNum, limit, "id", field, true, 10, summaryTable);
        System.out.println(format.format(new Date()) + " 数据插入⑹ 表名: " + spiderCnKiAnalysisTable + " 结束了。");

        // dataIdAndAidMap.size(): 2921920
        field = "enkeyword`,`entitle`,`year`,`enabs`,`cnjournal`,`enjournal`,`doi`,`page`,`volum`,`issue`,`auorg`,`fund`,`cntitle`,`cnabs`,`oriorgan`,`cnauthor`,`cnkeyword";
        ReadWf.readWf(spiderWanFangAnalysisTable, onePageNum, limit, "id", field, true, 10, summaryTable, wordAndCodeSetMap);
        System.out.println(format.format(new Date()) + " 数据插入⑺ 表名: " + spiderWanFangAnalysisTable + " 结束了。");

        // dataIdAndAidMap.size(): 4230578
        field = "enkeyword`,`entitle`,`enabs`,`cnau`,`enau`,`vol`,`cnfrom`,`enfrom`,`origin`,`cnfund`,`cntitle`,`cnabs`,`classinfo`,`cnkeyword";
        ReadWp.readWp(spiderCqVipAnalysisTable, onePageNum, limit, "id", field, true, 10, summaryTable, wordAndCodeSetMap);
        System.out.println(format.format(new Date()) + " 数据插入⑻ 表名: " + spiderCqVipAnalysisTable + " 结束了。");

        field = "title`,`keyword`,`ab`,`cn_kw`,`cn_ab`,`aid`,`pmId`,`ut`,`c1_au`,`rp_au`,`language";
        ReadKw.readKeyWord(summaryTable, onePageNum, limit, "id", field, true, 10, fullAbbrKeyWordTable,
                keyWordSumTable, meshTable, htLocationChinaTable, basicHospUnivDeptTable, hospUnivInfoSumTable);

        wordAndCodeSetMap.clear();

        String filePath = "F:\\WorkSpaces\\Data\\src\\main\\resources\\dict\\2015年及以来PubMed收录的临床指南_按Guideline限定_共13598条_2025_01_12.txt";
        ReadFenLei.addFenLei(summaryTable, onePageNum, limit, pmArticleTable, filePath, summaryTypeTable);
//
        ReadTc.upDataCitation(summaryTable, citationTable, referenceTable, limit);

        WebSite.updateWebSite(summaryTable, doiTable, doiAddTable, pmArticleTable, ncTextTable, limit);


        /*
          春节回家，回来后需要做的工作：
          1. 中、英文单位的提取，使用unit方法内的方法，中文的还需要再测试一下。
          2. 关键词的提取，并产生由标题和关键词形成的类似WOS中的plus关键词。
          3. 摘要中的前言、结果、讨论部分的提取，包含中、英文的。
          4. 导出文献计量软件所需要的纯文本格式。
          2025.01.23 济南
         */

    }


    // 数据融合，将七张表的数据，融合到一起，因鲍工的basicCoreTable没有wos、pmid、cscd这三张表的自增主键，因此先通过Map作对应，然后再获取期刊关联表中的影响因子等数据，以及参文和引文的质量，一起插入到最终的结果表（summaryTable）。
    public static void dataFusion(String spiderCnCoreTable, String pmArticleTable, String utArticleTable, String summaryTable, String basicCoreTable, String quotaTable, String jourMergeTable, String limit, int onePageNum) throws SQLException {
        SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

        Map<String, Integer> wosAndAutoIdMap = new ConcurrentHashMap<>();
        Map<String, Integer> cscdAndAutoIdMap = new ConcurrentHashMap<>();
        Map<String, Integer> pmIdAndAutoIdMap = new ConcurrentHashMap<>();
        Map<Integer, En.JidInfo> jidInfoMap = new ConcurrentHashMap<>();
        Map<Integer, Double> referenceQuotaMap = new ConcurrentHashMap<>();
        Map<Integer, Double> citationQuotaMap = new ConcurrentHashMap<>();

        Db.use().execute("truncate table " + summaryTable);
        addTableField(utArticleTable, onePageNum, limit, "pid", "UT", true, 10, "getWosId", pmIdAndAutoIdMap, wosAndAutoIdMap, cscdAndAutoIdMap, jidInfoMap, referenceQuotaMap, citationQuotaMap);
        System.out.println(format.format(new Date()) + " 数据融合① wosAndAutoIdMap.size():" + wosAndAutoIdMap.size());

        addTableField(spiderCnCoreTable, onePageNum, limit, "id", "UT", true, 10, "getCscdId", pmIdAndAutoIdMap, wosAndAutoIdMap, cscdAndAutoIdMap, jidInfoMap, referenceQuotaMap, citationQuotaMap);
        System.out.println(format.format(new Date()) + " 数据融合② cscdAndAutoIdMap.size():" + cscdAndAutoIdMap.size());

        addTableField(pmArticleTable, onePageNum, limit, "id", "pmid", true, 10, "getNcbiId", pmIdAndAutoIdMap, wosAndAutoIdMap, cscdAndAutoIdMap, jidInfoMap, referenceQuotaMap, citationQuotaMap);
        System.out.println(format.format(new Date()) + " 数据融合③ pmIdAndAutoIdMap.size():" + pmIdAndAutoIdMap.size());

        String field = "reference_quota`,`citation_quota`,`pid";
        addTableField(quotaTable, onePageNum, limit, "id", field, true, 10, "getQuota", pmIdAndAutoIdMap, wosAndAutoIdMap, cscdAndAutoIdMap, jidInfoMap, referenceQuotaMap, citationQuotaMap);
        System.out.println(format.format(new Date()) + " 数据融合④ referenceQuotaMap.size():" + referenceQuotaMap.size());

        field = "jcr_quartile`,`zky_subject`,`cite_score`,`cs_sjr`,`jcr_if`,`is_beida`,`is_cs`,`is_cscd`,`is_jcr`,`is_pubmed`,`is_tjy`,`is_yiigle`,`is_zky`,`zky_dalei`,`nc_nlmid_list`,`nc_nlm_title_abbreviation`,`ncbi_mesh`,`ncbi_subject";
        addTableField(jourMergeTable, onePageNum, limit, "id", field, true, 10, "getJidInfo", pmIdAndAutoIdMap, wosAndAutoIdMap, cscdAndAutoIdMap, jidInfoMap, referenceQuotaMap, citationQuotaMap);
        System.out.println(format.format(new Date()) + " 数据融合⑤ jidInfoMap.size():" + jidInfoMap.size());

        field = "jid`,`wos_ut`,`pm`,`cscd_ut`,`yiigle_id`,`cnki_id`,`wanfang_id`,`weipu_id";
        doInsertTable(basicCoreTable, onePageNum, limit, "id", field, true, 10, pmIdAndAutoIdMap, wosAndAutoIdMap, cscdAndAutoIdMap, summaryTable, jidInfoMap, referenceQuotaMap, citationQuotaMap);

        wosAndAutoIdMap.clear();
        cscdAndAutoIdMap.clear();
        pmIdAndAutoIdMap.clear();
        jidInfoMap.clear();
        referenceQuotaMap.clear();
        citationQuotaMap.clear();

    }

    // 执行插表，将期刊信息（影响因子等）、参文引文质量等，并按WOS->PM->CSCD->yiigle->cnki->wanfang->weipu的顺序，从七张表中进行优先插入。
    public static void doInsertTable(String basicCoreTable, int onePageNum, String limit, String autoId, String field, boolean print, int allTotal, Map<String, Integer> pmIdAndAutoIdMap, Map<String, Integer> wosAndAutoIdMap, Map<String, Integer> cscdAndAutoIdMap,
                                     String summaryTable, Map<Integer, En.JidInfo> jidInfoMap, Map<Integer, Double> referenceQuotaMap, Map<Integer, Double> citationQuotaMap) throws SQLException {
        SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        List<Entity> tableNum = Db.use().query("select count(1) as count from " + basicCoreTable);
        String save = ",`aid`,`jid`,`jcr_quartile`,`zky_subject`,`cite_score`,`cs_sjr`,`jcr_if`,`is_beida`,`is_cs`,`is_cscd`,`is_jcr`,`is_pubmed`,`is_tjy`,`is_yiigle`,`is_zky`,`zky_dalei`,`is_core`," +
                "`citation_quota`,`reference_quota`,`nlmId`,`ncbi_journal`,`ncbi_mesh`,`ncbi_subject`";
        if (tableNum.get(0).getInt("count") > 0) {
            int tableMax = Db.use().queryNumber("select max(" + autoId + ") from " + basicCoreTable).intValue();
            Collection<Integer> tableList = new ArrayList<>();
            NumberUtil.appendRange(0, tableMax + onePageNum, onePageNum, tableList);
            AtomicInteger sumNum = new AtomicInteger(0);
            int showNum = Math.max((tableList.size() / allTotal), 1) + (tableList.size() % allTotal);
            AtomicInteger startNum = new AtomicInteger(1);
            tableList.parallelStream().forEach(startId -> {
                try {
                    List<Entity> tableData = Db.use().query("select `" + autoId + "`,`" + field + "` from " + basicCoreTable + " where " + autoId + " between " + startId + " and " + (startId + onePageNum - 1) + limit);
                    if (print && sumNum.getAndIncrement() % showNum == 0) {
//                        System.out.println("\033[31;1m" + format.format(new Date()) + " 读表现在开始：" + startNum.getAndIncrement() + " 总次数：" + allTotal + " 表名：" + basicCoreTable + Utils.printMemoryStr() + "\033[0m");
                    }
                    for (Entity entry : tableData) {
                        Integer aid = entry.getInt(autoId);
                        if (null != aid && aid > 0) {
                            int jid = Utils.getIntField(entry, "jid");
                            int utId = getUt(wosAndAutoIdMap, entry.getStr("wos_ut"));
                            int pmId = getUt(pmIdAndAutoIdMap, entry.getStr("pm"));
                            int cdId = getUt(cscdAndAutoIdMap, entry.getStr("cscd_ut"));
                            int zhId = getAutoId(entry.getStr("yiigle_id"));
                            int zwId = getAutoId(entry.getStr("cnki_id"));
                            int wfId = getAutoId(entry.getStr("wanfang_id"));
                            int wpId = getAutoId(entry.getStr("weipu_id"));
                            double cQuota = citationQuotaMap.getOrDefault(aid, 0.0);
                            double rQuota = referenceQuotaMap.getOrDefault(aid, 0.0);
                            En.JidInfo jidInfo = (jid > 0 && jidInfoMap.containsKey(jid)) ? jidInfoMap.get(jid) : new En.JidInfo();
                            if (utId > 0) {
                                // insert into pm_ut_aid_info_1w (`c1_list`, `rp_list`, `pmId`) SELECT `c1_list`, `rp_list`, 100 from pm_ut_aid_info where id =1;
                                insert(summaryTable, "wos_id", save, aid, jid, cQuota, rQuota, utId, jidInfo);
                            } else if (pmId > 0) {
                                insert(summaryTable, "ncbi_id", save, aid, jid, cQuota, rQuota, pmId, jidInfo);
                            } else if (cdId > 0) {
                                insert(summaryTable, "cscd_id", save, aid, jid, cQuota, rQuota, cdId, jidInfo);
                            } else if (zhId > 0) {
                                insert(summaryTable, "yiigle_id", save, aid, jid, cQuota, rQuota, zhId, jidInfo);
                            } else if (zwId > 0) {
                                insert(summaryTable, "cnki_id", save, aid, jid, cQuota, rQuota, zwId, jidInfo);
                            } else if (wfId > 0) {
                                insert(summaryTable, "wanfang_id", save, aid, jid, cQuota, rQuota, wfId, jidInfo);
                            } else if (wpId > 0) {
                                insert(summaryTable, "weipu_id", save, aid, jid, cQuota, rQuota, wpId, jidInfo);
                            }
                        }
                    }
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            });
        }
    }

    // 插表程序，这个比较复杂，需要多测试。
    public static void insert(String summaryTable, String saveId, String save, int aid, int jid, double cQuota, double rQuota, int dataId, En.JidInfo j) throws SQLException {
        Db.use().execute("insert into " + summaryTable + "(" + "`" + saveId + "`" + save + ") values (" + dataId + "," + aid + "," + jid + "," + j.getJcrQuartile() + ",\"" + j.getZkySubject() + "\"," + j.getCiteScore() + ","
                + j.getCsSjr() + "," + j.getJcrIf() + "," + j.getIsBeiDa() + "," + j.getIsCs() + "," + j.getIsCsCd() + "," + j.getIsJcr() + "," + j.getIsPubmed() + "," + j.getIsTjy() + "," + j.getIsYiiGle() + "," + j.getIsZky()
                + "," + j.getZkyDaLei() + "," + j.getIsCore() + "," + cQuota + "," + rQuota + ",\"" + j.getNlmId() + "\",\"" + j.getNcbiJournal() + "\",\"" + j.getNcbiMesh() + "\",\"" + j.getNcbiSubject() + "\");");
    }

    // 获取三种表的对应关系（WOS中的UT与表中的自增主键以及CSCD和PMID表），以及期刊信息（影响因子）、参文引文质量等数据。
    public static void addTableField(String readTable, int onePageNum, String limit, String autoId, String field, boolean print, int allTotal, String type, Map<String, Integer> pmIdAndAutoIdMap, Map<String, Integer> wosAndAutoIdMap,
                                     Map<String, Integer> cscdAndAutoIdMap, Map<Integer, En.JidInfo> jidInfoMap, Map<Integer, Double> referenceQuotaMap, Map<Integer, Double> citationQuotaMap) throws SQLException {
        SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        List<Entity> tableNum = Db.use().query("select count(1) as count from " + readTable);
        if (tableNum.get(0).getInt("count") > 0) {
            int tableMax = Db.use().queryNumber("select max(" + autoId + ") from " + readTable).intValue();
            Collection<Integer> tableList = new ArrayList<>();
            NumberUtil.appendRange(0, tableMax + onePageNum, onePageNum, tableList);
            AtomicInteger sumNum = new AtomicInteger(0);
            int showNum = Math.max((tableList.size() / allTotal), 1) + (tableList.size() % allTotal);
            AtomicInteger startNum = new AtomicInteger(1);
            tableList.parallelStream().forEach(startId -> {
                try {
                    List<Entity> tableData = Db.use().query("select `" + autoId + "`,`" + field + "` from " + readTable + " where " + autoId + " between " + startId + " and " + (startId + onePageNum - 1) + limit);
                    if (print && sumNum.getAndIncrement() % showNum == 0) {
//                        System.out.println("\033[31;1m" + format.format(new Date()) + " 读表现在开始：" + startNum.getAndIncrement() + " 总次数：" + allTotal + " 表名：" + readTable + Utils.printMemoryStr() + "\033[0m");
                    }
                    for (Entity entry : tableData) {
                        if ("getWosId".equals(type)) {
                            String ut = entry.getStr("UT");
                            Integer aid = entry.getInt(autoId);
                            if (null != ut && null != aid && aid > 0) {
                                ut = ut.toUpperCase().replace(" ", "").replace("WOS:", "").trim();
                                if (ut.length() == 15) {
                                    wosAndAutoIdMap.put(ut, aid);
                                }
                            }
                        }
                        if ("getCscdId".equals(type)) {
                            String ut = entry.getStr("UT");
                            Integer aid = entry.getInt(autoId);
                            if (null != ut && null != aid && aid > 0) {
                                ut = ut.toUpperCase().replace(" ", "").replace("CSCD:", "").trim();
                                if (ut.length() > 3 && NumberUtil.isInteger(ut)) {
                                    cscdAndAutoIdMap.put(ut, aid);
                                }
                            }
                        }
                        if ("getNcbiId".equals(type)) {
                            Integer aid = entry.getInt(autoId);
                            Integer pmId = entry.getInt("pmid");
                            if (null != pmId && pmId > 0 && null != aid && aid > 0) {
                                pmIdAndAutoIdMap.put(Integer.toString(pmId), aid);
                            }
                        }
                        if ("getQuota".equals(type)) {
                            Double referenceQuota = entry.getDouble("reference_quota");
                            Double citationQuota = entry.getDouble("citation_quota");
                            Integer pId = entry.getInt("pid");
                            if (null != pId && pId > 0) {
                                if (null != referenceQuota && referenceQuota > 0.0) {
                                    referenceQuotaMap.put(pId, referenceQuota);
                                }
                                if (null != citationQuota && citationQuota > 0.0) {
                                    citationQuotaMap.put(pId, citationQuota);
                                }
                            }
                        }
                        if ("getJidInfo".equals(type)) {
                            Integer jid = entry.getInt(autoId); // 期刊唯一id号，也是期刊关联表的自增主键
                            if (null != jid && jid > 0) {
                                En.JidInfo jidInfo = new En.JidInfo();
                                String jcrQuartile = Utils.getStrField(entry, "jcr_quartile").toUpperCase().replace("Q", "").replace(" ", "").trim();
                                jidInfo.setJcrQuartile(NumberUtil.isInteger(jcrQuartile) ? Integer.parseInt(jcrQuartile) : 0); // scie期刊分区
                                jidInfo.setZkySubject(Utils.getStrField(entry, "zky_subject")); // 中科院大区名称
                                jidInfo.setCiteScore(Utils.getDouField(entry, "cite_score")); // 期刊cite影响因子值
                                jidInfo.setCsSjr(Utils.getDouField(entry, "cs_sjr")); // 期刊citeScore声望指数
                                jidInfo.setJcrIf(Utils.getDouField(entry, "jcr_if")); // jcr(scie)期刊影响因子
                                jidInfo.setIsBeiDa(Utils.getIntField(entry, "is_beida")); // 是否北大核心期刊收录，是为1，否为0
                                jidInfo.setIsCs(Utils.getIntField(entry, "is_cs")); // 是否威望指数SJR期刊收录，是为1，否为0
                                jidInfo.setIsCsCd(Utils.getIntField(entry, "is_cscd")); // 是否CSCD期刊收录，是为1，否为0
                                jidInfo.setIsJcr(Utils.getIntField(entry, "is_jcr")); // 是否是sci收录期刊
                                jidInfo.setIsPubmed(Utils.getIntField(entry, "is_pubmed")); // 是否PubMed期刊收录，是为1，否为0
                                jidInfo.setIsTjy(Utils.getIntField(entry, "is_tjy")); // 是否统计源期刊收录，是为1，否为0
                                jidInfo.setIsYiiGle(Utils.getIntField(entry, "is_yiigle")); // 中华医学系列收录
                                jidInfo.setIsZky(Utils.getIntField(entry, "is_zky")); // 是否中科院期刊收录，是为1，否为0
                                jidInfo.setZkyDaLei(Utils.getIntField(entry, "zky_dalei")); // 中科院大类分区最佳值
                                jidInfo.setIsCore((jidInfo.getIsBeiDa() + jidInfo.getIsCs() + jidInfo.getIsCsCd() + jidInfo.getIsJcr() + jidInfo.getIsPubmed() + jidInfo.getIsTjy() + jidInfo.getIsYiiGle() + jidInfo.getIsZky()) > 0 ? 1 : 0);
                                jidInfo.setJid(jid);
                                String nlmIds = Utils.getStrField(entry, "nc_nlmid_list");
                                if (nlmIds.contains("\"]")) {
                                    List<String> nlmIdList = JSONObject.parseArray(nlmIds, String.class);
                                    if (!nlmIdList.isEmpty()) {
                                        jidInfo.setNlmId(nlmIdList.get(0));
                                    }
                                }
                                jidInfo.setNcbiJournal(Utils.getStrField(entry, "nc_nlm_title_abbreviation").replace("\"", "")); // ncbi的abbr期刊名称
                                String meshs = Utils.getStrField(entry, "ncbi_mesh").replace("\"", "");
                                if (!meshs.isEmpty()) {
                                    List<String> list = Arrays.asList(meshs.split("Łł"));
                                    jidInfo.setNcbiMesh(CollUtil.join(list, "; ")); // ncbi期刊mesh
                                }
                                String subjects = Utils.getStrField(entry, "ncbi_subject");
                                if (subjects.contains("\"]")) {
                                    List<String> list = JSONObject.parseArray(subjects, String.class);
                                    jidInfo.setNcbiSubject(CollUtil.join(list, "; ").replace("\"", "")); // ncbi期刊学科
                                }
                                jidInfoMap.put(jid, jidInfo);
                            }
                        }
                    }
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            });
        }
    }

    // 因鲍工的程序，UT号不是一个，而是一个逗号分割的多个，所以在这里只取其中的一个即可。本方法适用于CSCD和WOS两张表。
    public static int getUt(Map<String, Integer> wosAndAutoIdMap, String uts) {
        if (null != uts) {
            String[] split = uts.replace(" ", "").split(",");
            for (String ut : split) {
                ut = ut.toUpperCase().replace(" ", "").replace("CSCD:", "").replace("WOS:", "").trim();
                if (wosAndAutoIdMap.containsKey(ut)) {
                    return wosAndAutoIdMap.get(ut);
                }
            }
        }
        return 0;
    }

    // 因鲍工的程序，各表中的自增主键也不是一个，而是一个逗号分割的多个，所以在这里只取其中的一个即可。
    public static int getAutoId(String ids) {
        if (null != ids) {
            String[] split = ids.replace(" ", "").split(",");
            for (String id : split) {
                if (NumberUtil.isInteger(id)) {
                    int i = Integer.parseInt(id);
                    if (i > 0) {
                        return i;
                    }
                }
            }
        }
        return 0;
    }

    public static String reInfo(String info) {
        info = info.replace(";():. ", ". ").replace("():. ", ". ").replace(";:. ", ". ").replace("):. ", "). ").replace(";:", ";").replace("-;", ";");
        info = info.endsWith("-+. ") ? (info.substring(0, info.length() - "-+. ".length()) + ". ") : info;
        return info;
    }

    /**
     * "C:\Program Files\Java\jdk-1.8\bin\java.exe" -XX:MetaspaceSize=256m -XX:MaxMetaspaceSize=1024m -Xmx93800m -Xms93400m "-javaagent:C:\Program Files\JetBrains\IntelliJ IDEA 2023.3.4\lib\idea_rt.jar=60700:C:\Program Files\JetBrains\IntelliJ IDEA 2023.3.4\bin" -Dfile.encoding=UTF-8 -classpath "C:\Program Files\Java\jdk-1.8\jre\lib\charsets.jar;C:\Program Files\Java\jdk-1.8\jre\lib\deploy.jar;C:\Program Files\Java\jdk-1.8\jre\lib\ext\access-bridge-64.jar;C:\Program Files\Java\jdk-1.8\jre\lib\ext\cldrdata.jar;C:\Program Files\Java\jdk-1.8\jre\lib\ext\dnsns.jar;C:\Program Files\Java\jdk-1.8\jre\lib\ext\jaccess.jar;C:\Program Files\Java\jdk-1.8\jre\lib\ext\jfxrt.jar;C:\Program Files\Java\jdk-1.8\jre\lib\ext\localedata.jar;C:\Program Files\Java\jdk-1.8\jre\lib\ext\nashorn.jar;C:\Program Files\Java\jdk-1.8\jre\lib\ext\sunec.jar;C:\Program Files\Java\jdk-1.8\jre\lib\ext\sunjce_provider.jar;C:\Program Files\Java\jdk-1.8\jre\lib\ext\sunmscapi.jar;C:\Program Files\Java\jdk-1.8\jre\lib\ext\sunpkcs11.jar;C:\Program Files\Java\jdk-1.8\jre\lib\ext\zipfs.jar;C:\Program Files\Java\jdk-1.8\jre\lib\javaws.jar;C:\Program Files\Java\jdk-1.8\jre\lib\jce.jar;C:\Program Files\Java\jdk-1.8\jre\lib\jfr.jar;C:\Program Files\Java\jdk-1.8\jre\lib\jfxswt.jar;C:\Program Files\Java\jdk-1.8\jre\lib\jsse.jar;C:\Program Files\Java\jdk-1.8\jre\lib\management-agent.jar;C:\Program Files\Java\jdk-1.8\jre\lib\plugin.jar;C:\Program Files\Java\jdk-1.8\jre\lib\resources.jar;C:\Program Files\Java\jdk-1.8\jre\lib\rt.jar;C:\WorkSpaces\Study\target\classes;C:\Users\Administrator\.m2\repository\mysql\mysql-connector-java\8.0.21\mysql-connector-java-8.0.21.jar;C:\Users\Administrator\.m2\repository\com\google\protobuf\protobuf-java\3.11.4\protobuf-java-3.11.4.jar;C:\Users\Administrator\.m2\repository\cn\hutool\hutool-all\5.7.22\hutool-all-5.7.22.jar;C:\Users\Administrator\.m2\repository\com\alibaba\fastjson\1.2.79\fastjson-1.2.79.jar;C:\Users\Administrator\.m2\repository\com\zaxxer\HikariCP\3.4.5\HikariCP-3.4.5.jar;C:\Users\Administrator\.m2\repository\org\slf4j\slf4j-api\1.7.25\slf4j-api-1.7.25.jar;C:\Users\Administrator\.m2\repository\co\elastic\clients\elasticsearch-java\8.5.1\elasticsearch-java-8.5.1.jar;C:\Users\Administrator\.m2\repository\com\google\code\findbugs\jsr305\3.0.2\jsr305-3.0.2.jar;C:\Users\Administrator\.m2\repository\org\eclipse\parsson\parsson\1.0.0\parsson-1.0.0.jar;C:\Users\Administrator\.m2\repository\org\elasticsearch\client\elasticsearch-rest-client\8.5.1\elasticsearch-rest-client-8.5.1.jar;C:\Users\Administrator\.m2\repository\org\apache\httpcomponents\httpclient\4.5.13\httpclient-4.5.13.jar;C:\Users\Administrator\.m2\repository\org\apache\httpcomponents\httpcore\4.4.13\httpcore-4.4.13.jar;C:\Users\Administrator\.m2\repository\org\apache\httpcomponents\httpasyncclient\4.1.5\httpasyncclient-4.1.5.jar;C:\Users\Administrator\.m2\repository\org\apache\httpcomponents\httpcore-nio\4.4.13\httpcore-nio-4.4.13.jar;C:\Users\Administrator\.m2\repository\commons-codec\commons-codec\1.15\commons-codec-1.15.jar;C:\Users\Administrator\.m2\repository\commons-logging\commons-logging\1.2\commons-logging-1.2.jar;C:\Users\Administrator\.m2\repository\jakarta\json\jakarta.json-api\2.0.1\jakarta.json-api-2.0.1.jar;C:\Users\Administrator\.m2\repository\com\aspose\aspose-words\16.8.0\aspose-words-16.8.0.jar;C:\Users\Administrator\.m2\repository\org\apache\poi\poi-ooxml\4.1.2\poi-ooxml-4.1.2.jar;C:\Users\Administrator\.m2\repository\org\apache\poi\poi\4.1.2\poi-4.1.2.jar;C:\Users\Administrator\.m2\repository\org\apache\commons\commons-collections4\4.4\commons-collections4-4.4.jar;C:\Users\Administrator\.m2\repository\org\apache\commons\commons-math3\3.6.1\commons-math3-3.6.1.jar;C:\Users\Administrator\.m2\repository\com\zaxxer\SparseBitSet\1.2\SparseBitSet-1.2.jar;C:\Users\Administrator\.m2\repository\org\apache\poi\poi-ooxml-schemas\4.1.2\poi-ooxml-schemas-4.1.2.jar;C:\Users\Administrator\.m2\repository\org\apache\xmlbeans\xmlbeans\3.1.0\xmlbeans-3.1.0.jar;C:\Users\Administrator\.m2\repository\org\apache\commons\commons-compress\1.19\commons-compress-1.19.jar;C:\Users\Administrator\.m2\repository\com\github\virtuald\curvesapi\1.06\curvesapi-1.06.jar;C:\Users\Administrator\.m2\repository\com\fasterxml\jackson\core\jackson-databind\2.14.1\jackson-databind-2.14.1.jar;C:\Users\Administrator\.m2\repository\org\jsoup\jsoup\1.8.2\jsoup-1.8.2.jar;C:\Users\Administrator\.m2\repository\com\fasterxml\jackson\core\jackson-core\2.14.1\jackson-core-2.14.1.jar;C:\Users\Administrator\.m2\repository\cc\mallet\mallet\2.0.8\mallet-2.0.8.jar;C:\Users\Administrator\.m2\repository\junit\junit\4.10\junit-4.10.jar;C:\Users\Administrator\.m2\repository\org\hamcrest\hamcrest-core\1.1\hamcrest-core-1.1.jar;C:\Users\Administrator\.m2\repository\org\beanshell\bsh\2.0b4\bsh-2.0b4.jar;C:\Users\Administrator\.m2\repository\jgrapht\jgrapht\0.6.0\jgrapht-0.6.0.jar;C:\Users\Administrator\.m2\repository\net\sf\jwordnet\jwnl\1.4_rc3\jwnl-1.4_rc3.jar;C:\Users\Administrator\.m2\repository\net\sf\trove4j\trove4j\2.0.2\trove4j-2.0.2.jar;C:\Users\Administrator\.m2\repository\com\googlecode\matrix-toolkits-java\mtj\0.9.14\mtj-0.9.14.jar;C:\Users\Administrator\.m2\repository\com\googlecode\netlib-java\netlib-java\0.9.3\netlib-java-0.9.3.jar;C:\Users\Administrator\.m2\repository\net\sourceforge\f2j\arpack_combined_all\0.1\arpack_combined_all-0.1.jar;C:\Users\Administrator\.m2\repository\org\jdom\jdom\1.1\jdom-1.1.jar;C:\Users\Administrator\.m2\repository\org\jbibtex\jbibtex\1.0.0\jbibtex-1.0.0.jar;C:\Users\Administrator\.m2\repository\com\fasterxml\jackson\core\jackson-annotations\2.14.1\jackson-annotations-2.14.1.jar;C:\Users\Administrator\.m2\repository\org\projectlombok\lombok\1.18.30\lombok-1.18.30.jar" com.qf.index.Main
     * 2024-08-26 07:31:40 程序开始了~~~
     * 2024-08-26 07:31:40 数据融合程序开始了~~~
     * [2024-08-26 07:31:40] [DEBUG] cn.hutool.log.LogFactory: Use [Hutool Console Logging] Logger As Default.
     * [2024-08-26 07:31:40] [DEBUG] cn.hutool.setting.SettingLoader: Load setting file [classpath:config/db.setting]
     * [2024-08-26 07:31:40] [DEBUG] cn.hutool.db.DbUtil: Show sql: [false], format sql: [false], show params: [false], level: [DEBUG]
     * [2024-08-26 07:31:40] [DEBUG] cn.hutool.db.ds.DSFactory: Use [HikariCP] DataSource As Default
     * [2024-08-26 07:31:41] [DEBUG] cn.hutool.db.dialect.DialectFactory: Use Dialect: [MysqlDialect].
     * 2024-08-26 07:31:42 读表现在开始：1 总次数：10 表名：scholar_24_07.pm_ut_aid_info_ut 内存申请：87 Gb 空余：76 Gb 获取：87 Gb
     * 2024-08-26 07:32:42 读表现在开始：2 总次数：10 表名：scholar_24_07.pm_ut_aid_info_ut 内存申请：87 Gb 空余：69 Gb 获取：87 Gb
     * 2024-08-26 07:33:44 读表现在开始：3 总次数：10 表名：scholar_24_07.pm_ut_aid_info_ut 内存申请：87 Gb 空余：79 Gb 获取：87 Gb
     * 2024-08-26 07:34:53 读表现在开始：4 总次数：10 表名：scholar_24_07.pm_ut_aid_info_ut 内存申请：87 Gb 空余：70 Gb 获取：87 Gb
     * 2024-08-26 07:36:02 读表现在开始：5 总次数：10 表名：scholar_24_07.pm_ut_aid_info_ut 内存申请：87 Gb 空余：61 Gb 获取：87 Gb
     * 2024-08-26 07:37:10 读表现在开始：6 总次数：10 表名：scholar_24_07.pm_ut_aid_info_ut 内存申请：84 Gb 空余：66 Gb 获取：84 Gb
     * 2024-08-26 07:38:17 读表现在开始：7 总次数：10 表名：scholar_24_07.pm_ut_aid_info_ut 内存申请：84 Gb 空余：68 Gb 获取：84 Gb
     * 2024-08-26 07:39:27 读表现在开始：8 总次数：10 表名：scholar_24_07.pm_ut_aid_info_ut 内存申请：85 Gb 空余：73 Gb 获取：85 Gb
     * 2024-08-26 07:40:37 读表现在开始：9 总次数：10 表名：scholar_24_07.pm_ut_aid_info_ut 内存申请：85 Gb 空余：61 Gb 获取：85 Gb
     * 2024-08-26 07:41:49 读表现在开始：10 总次数：10 表名：scholar_24_07.pm_ut_aid_info_ut 内存申请：85 Gb 空余：66 Gb 获取：85 Gb
     * 2024-08-26 07:44:31 wosAndAutoIdMap.size():90414577
     * 2024-08-26 07:44:31 读表现在开始：1 总次数：10 表名：scholar_24_07.pm_ut_aid_info_cd 内存申请：81 Gb 空余：49 Gb 获取：80 Gb
     * 2024-08-26 07:44:39 读表现在开始：2 总次数：10 表名：scholar_24_07.pm_ut_aid_info_cd 内存申请：85 Gb 空余：70 Gb 获取：85 Gb
     * 2024-08-26 07:44:43 读表现在开始：3 总次数：10 表名：scholar_24_07.pm_ut_aid_info_cd 内存申请：85 Gb 空余：67 Gb 获取：85 Gb
     * 2024-08-26 07:44:47 读表现在开始：4 总次数：10 表名：scholar_24_07.pm_ut_aid_info_cd 内存申请：85 Gb 空余：65 Gb 获取：85 Gb
     * 2024-08-26 07:44:51 读表现在开始：5 总次数：10 表名：scholar_24_07.pm_ut_aid_info_cd 内存申请：85 Gb 空余：63 Gb 获取：85 Gb
     * 2024-08-26 07:44:54 读表现在开始：6 总次数：10 表名：scholar_24_07.pm_ut_aid_info_cd 内存申请：85 Gb 空余：60 Gb 获取：85 Gb
     * 2024-08-26 07:44:58 读表现在开始：7 总次数：10 表名：scholar_24_07.pm_ut_aid_info_cd 内存申请：85 Gb 空余：58 Gb 获取：85 Gb
     * 2024-08-26 07:45:02 读表现在开始：8 总次数：10 表名：scholar_24_07.pm_ut_aid_info_cd 内存申请：85 Gb 空余：56 Gb 获取：85 Gb
     * 2024-08-26 07:45:05 读表现在开始：9 总次数：10 表名：scholar_24_07.pm_ut_aid_info_cd 内存申请：85 Gb 空余：54 Gb 获取：85 Gb
     * 2024-08-26 07:45:09 读表现在开始：10 总次数：10 表名：scholar_24_07.pm_ut_aid_info_cd 内存申请：85 Gb 空余：52 Gb 获取：85 Gb
     * 2024-08-26 07:45:16 cscdAndAutoIdMap.size():6269638
     * 2024-08-26 07:45:16 读表现在开始：1 总次数：10 表名：scholar_24_07.pm_ut_aid_info_pm 内存申请：85 Gb 空余：67 Gb 获取：85 Gb
     * 2024-08-26 07:45:48 读表现在开始：2 总次数：10 表名：scholar_24_07.pm_ut_aid_info_pm 内存申请：85 Gb 空余：61 Gb 获取：85 Gb
     * 2024-08-26 07:46:19 读表现在开始：3 总次数：10 表名：scholar_24_07.pm_ut_aid_info_pm 内存申请：85 Gb 空余：55 Gb 获取：85 Gb
     * 2024-08-26 07:46:52 读表现在开始：4 总次数：10 表名：scholar_24_07.pm_ut_aid_info_pm 内存申请：85 Gb 空余：67 Gb 获取：85 Gb
     * 2024-08-26 07:47:23 读表现在开始：5 总次数：10 表名：scholar_24_07.pm_ut_aid_info_pm 内存申请：85 Gb 空余：61 Gb 获取：85 Gb
     * 2024-08-26 07:47:52 读表现在开始：6 总次数：10 表名：scholar_24_07.pm_ut_aid_info_pm 内存申请：85 Gb 空余：55 Gb 获取：85 Gb
     * 2024-08-26 07:48:21 读表现在开始：7 总次数：10 表名：scholar_24_07.pm_ut_aid_info_pm 内存申请：85 Gb 空余：50 Gb 获取：85 Gb
     * 2024-08-26 07:48:50 读表现在开始：8 总次数：10 表名：scholar_24_07.pm_ut_aid_info_pm 内存申请：85 Gb 空余：61 Gb 获取：85 Gb
     * 2024-08-26 07:49:18 读表现在开始：9 总次数：10 表名：scholar_24_07.pm_ut_aid_info_pm 内存申请：85 Gb 空余：55 Gb 获取：85 Gb
     * 2024-08-26 07:49:46 读表现在开始：10 总次数：10 表名：scholar_24_07.pm_ut_aid_info_pm 内存申请：85 Gb 空余：49 Gb 获取：85 Gb
     * 2024-08-26 07:50:49 pmIdAndAutoIdMap.size():37455033
     * 2024-08-26 07:50:49 读表现在开始：1 总次数：10 表名：scholar_23_12.basic_core_paper_quota 内存申请：86 Gb 空余：62 Gb 获取：86 Gb
     * 2024-08-26 07:50:49 读表现在开始：2 总次数：10 表名：scholar_23_12.basic_core_paper_quota 内存申请：86 Gb 空余：61 Gb 获取：86 Gb
     * 2024-08-26 07:50:49 读表现在开始：3 总次数：10 表名：scholar_23_12.basic_core_paper_quota 内存申请：86 Gb 空余：61 Gb 获取：86 Gb
     * 2024-08-26 07:50:50 读表现在开始：4 总次数：10 表名：scholar_23_12.basic_core_paper_quota 内存申请：86 Gb 空余：61 Gb 获取：86 Gb
     * 2024-08-26 07:50:50 读表现在开始：5 总次数：10 表名：scholar_23_12.basic_core_paper_quota 内存申请：86 Gb 空余：60 Gb 获取：86 Gb
     * 2024-08-26 07:50:50 读表现在开始：6 总次数：10 表名：scholar_23_12.basic_core_paper_quota 内存申请：86 Gb 空余：58 Gb 获取：86 Gb
     * 2024-08-26 07:51:00 读表现在开始：7 总次数：10 表名：scholar_23_12.basic_core_paper_quota 内存申请：86 Gb 空余：51 Gb 获取：86 Gb
     * 2024-08-26 07:51:09 读表现在开始：8 总次数：10 表名：scholar_23_12.basic_core_paper_quota 内存申请：86 Gb 空余：42 Gb 获取：86 Gb
     * 2024-08-26 07:51:21 读表现在开始：9 总次数：10 表名：scholar_23_12.basic_core_paper_quota 内存申请：86 Gb 空余：55 Gb 获取：86 Gb
     * 2024-08-26 07:51:35 读表现在开始：10 总次数：10 表名：scholar_23_12.basic_core_paper_quota 内存申请：86 Gb 空余：47 Gb 获取：86 Gb
     * 2024-08-26 07:51:48 referenceQuotaMap.size():61528480
     * 2024-08-26 07:51:48 读表现在开始：1 总次数：10 表名：scholar_24_07.basic_jour_merge 内存申请：87 Gb 空余：45 Gb 获取：87 Gb
     * 2024-08-26 07:51:48 读表现在开始：2 总次数：10 表名：scholar_24_07.basic_jour_merge 内存申请：87 Gb 空余：45 Gb 获取：87 Gb
     * 2024-08-26 07:51:48 读表现在开始：3 总次数：10 表名：scholar_24_07.basic_jour_merge 内存申请：87 Gb 空余：45 Gb 获取：87 Gb
     * 2024-08-26 07:51:48 读表现在开始：4 总次数：10 表名：scholar_24_07.basic_jour_merge 内存申请：87 Gb 空余：45 Gb 获取：87 Gb
     * 2024-08-26 07:51:48 读表现在开始：5 总次数：10 表名：scholar_24_07.basic_jour_merge 内存申请：87 Gb 空余：45 Gb 获取：87 Gb
     * 2024-08-26 07:51:48 读表现在开始：6 总次数：10 表名：scholar_24_07.basic_jour_merge 内存申请：87 Gb 空余：45 Gb 获取：87 Gb
     * 2024-08-26 07:51:48 读表现在开始：7 总次数：10 表名：scholar_24_07.basic_jour_merge 内存申请：87 Gb 空余：45 Gb 获取：87 Gb
     * 2024-08-26 07:51:48 jidInfoMap.size():83853
     * 2024-08-26 07:51:48 读表现在开始：1 总次数：10 表名：scholar_24_07.basic_core_paper 内存申请：87 Gb 空余：45 Gb 获取：87 Gb
     * 2024-08-26 09:06:07 读表现在开始：2 总次数：10 表名：scholar_24_07.basic_core_paper 内存申请：88 Gb 空余：38 Gb 获取：88 Gb
     * 2024-08-26 10:21:40 读表现在开始：3 总次数：10 表名：scholar_24_07.basic_core_paper 内存申请：90 Gb 空余：53 Gb 获取：90 Gb
     * 2024-08-26 11:37:51 读表现在开始：4 总次数：10 表名：scholar_24_07.basic_core_paper 内存申请：90 Gb 空余：36 Gb 获取：90 Gb
     * 2024-08-26 12:53:08 读表现在开始：5 总次数：10 表名：scholar_24_07.basic_core_paper 内存申请：91 Gb 空余：57 Gb 获取：91 Gb
     * 2024-08-26 14:10:08 读表现在开始：6 总次数：10 表名：scholar_24_07.basic_core_paper 内存申请：91 Gb 空余：52 Gb 获取：91 Gb
     * 2024-08-26 15:28:17 读表现在开始：7 总次数：10 表名：scholar_24_07.basic_core_paper 内存申请：91 Gb 空余：45 Gb 获取：91 Gb
     * 2024-08-26 16:47:00 读表现在开始：8 总次数：10 表名：scholar_24_07.basic_core_paper 内存申请：91 Gb 空余：37 Gb 获取：91 Gb
     * 2024-08-26 18:05:20 读表现在开始：9 总次数：10 表名：scholar_24_07.basic_core_paper 内存申请：91 Gb 空余：62 Gb 获取：91 Gb
     * 2024-08-26 19:24:54 读表现在开始：10 总次数：10 表名：scholar_24_07.basic_core_paper 内存申请：91 Gb 空余：57 Gb 获取：91 Gb
     * 2024-08-26 20:45:05 数据融合程序结束了~~~
     * 2024-08-26 20:45:05 程序全部结束，总用时：47605193 ms。
     * [2024-08-26 20:45:05] [DEBUG] cn.hutool.db.ds.GlobalDSFactory$1: DataSource: [HikariCP] destroyed.
     *
     * 进程已结束，退出代码为 0
     */

    /**
     * "C:\Program Files\Java\jdk-1.8\bin\java.exe" -XX:MetaspaceSize=256m -XX:MaxMetaspaceSize=1024m -Xmx93800m -Xms93400m "-javaagent:C:\Program Files\JetBrains\IntelliJ IDEA 2023.3.4\lib\idea_rt.jar=55057:C:\Program Files\JetBrains\IntelliJ IDEA 2023.3.4\bin" -Dfile.encoding=UTF-8 -classpath "C:\Program Files\Java\jdk-1.8\jre\lib\charsets.jar;C:\Program Files\Java\jdk-1.8\jre\lib\deploy.jar;C:\Program Files\Java\jdk-1.8\jre\lib\ext\access-bridge-64.jar;C:\Program Files\Java\jdk-1.8\jre\lib\ext\cldrdata.jar;C:\Program Files\Java\jdk-1.8\jre\lib\ext\dnsns.jar;C:\Program Files\Java\jdk-1.8\jre\lib\ext\jaccess.jar;C:\Program Files\Java\jdk-1.8\jre\lib\ext\jfxrt.jar;C:\Program Files\Java\jdk-1.8\jre\lib\ext\localedata.jar;C:\Program Files\Java\jdk-1.8\jre\lib\ext\nashorn.jar;C:\Program Files\Java\jdk-1.8\jre\lib\ext\sunec.jar;C:\Program Files\Java\jdk-1.8\jre\lib\ext\sunjce_provider.jar;C:\Program Files\Java\jdk-1.8\jre\lib\ext\sunmscapi.jar;C:\Program Files\Java\jdk-1.8\jre\lib\ext\sunpkcs11.jar;C:\Program Files\Java\jdk-1.8\jre\lib\ext\zipfs.jar;C:\Program Files\Java\jdk-1.8\jre\lib\javaws.jar;C:\Program Files\Java\jdk-1.8\jre\lib\jce.jar;C:\Program Files\Java\jdk-1.8\jre\lib\jfr.jar;C:\Program Files\Java\jdk-1.8\jre\lib\jfxswt.jar;C:\Program Files\Java\jdk-1.8\jre\lib\jsse.jar;C:\Program Files\Java\jdk-1.8\jre\lib\management-agent.jar;C:\Program Files\Java\jdk-1.8\jre\lib\plugin.jar;C:\Program Files\Java\jdk-1.8\jre\lib\resources.jar;C:\Program Files\Java\jdk-1.8\jre\lib\rt.jar;C:\WorkSpaces\Study\target\classes;C:\Users\Administrator\.m2\repository\mysql\mysql-connector-java\8.0.21\mysql-connector-java-8.0.21.jar;C:\Users\Administrator\.m2\repository\com\google\protobuf\protobuf-java\3.11.4\protobuf-java-3.11.4.jar;C:\Users\Administrator\.m2\repository\cn\hutool\hutool-all\5.7.22\hutool-all-5.7.22.jar;C:\Users\Administrator\.m2\repository\com\alibaba\fastjson\1.2.79\fastjson-1.2.79.jar;C:\Users\Administrator\.m2\repository\com\zaxxer\HikariCP\3.4.5\HikariCP-3.4.5.jar;C:\Users\Administrator\.m2\repository\org\slf4j\slf4j-api\1.7.25\slf4j-api-1.7.25.jar;C:\Users\Administrator\.m2\repository\co\elastic\clients\elasticsearch-java\8.5.1\elasticsearch-java-8.5.1.jar;C:\Users\Administrator\.m2\repository\com\google\code\findbugs\jsr305\3.0.2\jsr305-3.0.2.jar;C:\Users\Administrator\.m2\repository\org\eclipse\parsson\parsson\1.0.0\parsson-1.0.0.jar;C:\Users\Administrator\.m2\repository\org\elasticsearch\client\elasticsearch-rest-client\8.5.1\elasticsearch-rest-client-8.5.1.jar;C:\Users\Administrator\.m2\repository\org\apache\httpcomponents\httpclient\4.5.13\httpclient-4.5.13.jar;C:\Users\Administrator\.m2\repository\org\apache\httpcomponents\httpcore\4.4.13\httpcore-4.4.13.jar;C:\Users\Administrator\.m2\repository\org\apache\httpcomponents\httpasyncclient\4.1.5\httpasyncclient-4.1.5.jar;C:\Users\Administrator\.m2\repository\org\apache\httpcomponents\httpcore-nio\4.4.13\httpcore-nio-4.4.13.jar;C:\Users\Administrator\.m2\repository\commons-codec\commons-codec\1.15\commons-codec-1.15.jar;C:\Users\Administrator\.m2\repository\commons-logging\commons-logging\1.2\commons-logging-1.2.jar;C:\Users\Administrator\.m2\repository\jakarta\json\jakarta.json-api\2.0.1\jakarta.json-api-2.0.1.jar;C:\Users\Administrator\.m2\repository\com\aspose\aspose-words\16.8.0\aspose-words-16.8.0.jar;C:\Users\Administrator\.m2\repository\org\apache\poi\poi-ooxml\4.1.2\poi-ooxml-4.1.2.jar;C:\Users\Administrator\.m2\repository\org\apache\poi\poi\4.1.2\poi-4.1.2.jar;C:\Users\Administrator\.m2\repository\org\apache\commons\commons-collections4\4.4\commons-collections4-4.4.jar;C:\Users\Administrator\.m2\repository\org\apache\commons\commons-math3\3.6.1\commons-math3-3.6.1.jar;C:\Users\Administrator\.m2\repository\com\zaxxer\SparseBitSet\1.2\SparseBitSet-1.2.jar;C:\Users\Administrator\.m2\repository\org\apache\poi\poi-ooxml-schemas\4.1.2\poi-ooxml-schemas-4.1.2.jar;C:\Users\Administrator\.m2\repository\org\apache\xmlbeans\xmlbeans\3.1.0\xmlbeans-3.1.0.jar;C:\Users\Administrator\.m2\repository\org\apache\commons\commons-compress\1.19\commons-compress-1.19.jar;C:\Users\Administrator\.m2\repository\com\github\virtuald\curvesapi\1.06\curvesapi-1.06.jar;C:\Users\Administrator\.m2\repository\com\fasterxml\jackson\core\jackson-databind\2.14.1\jackson-databind-2.14.1.jar;C:\Users\Administrator\.m2\repository\org\jsoup\jsoup\1.8.2\jsoup-1.8.2.jar;C:\Users\Administrator\.m2\repository\com\fasterxml\jackson\core\jackson-core\2.14.1\jackson-core-2.14.1.jar;C:\Users\Administrator\.m2\repository\cc\mallet\mallet\2.0.8\mallet-2.0.8.jar;C:\Users\Administrator\.m2\repository\junit\junit\4.10\junit-4.10.jar;C:\Users\Administrator\.m2\repository\org\hamcrest\hamcrest-core\1.1\hamcrest-core-1.1.jar;C:\Users\Administrator\.m2\repository\org\beanshell\bsh\2.0b4\bsh-2.0b4.jar;C:\Users\Administrator\.m2\repository\jgrapht\jgrapht\0.6.0\jgrapht-0.6.0.jar;C:\Users\Administrator\.m2\repository\net\sf\jwordnet\jwnl\1.4_rc3\jwnl-1.4_rc3.jar;C:\Users\Administrator\.m2\repository\net\sf\trove4j\trove4j\2.0.2\trove4j-2.0.2.jar;C:\Users\Administrator\.m2\repository\com\googlecode\matrix-toolkits-java\mtj\0.9.14\mtj-0.9.14.jar;C:\Users\Administrator\.m2\repository\com\googlecode\netlib-java\netlib-java\0.9.3\netlib-java-0.9.3.jar;C:\Users\Administrator\.m2\repository\net\sourceforge\f2j\arpack_combined_all\0.1\arpack_combined_all-0.1.jar;C:\Users\Administrator\.m2\repository\org\jdom\jdom\1.1\jdom-1.1.jar;C:\Users\Administrator\.m2\repository\org\jbibtex\jbibtex\1.0.0\jbibtex-1.0.0.jar;C:\Users\Administrator\.m2\repository\com\fasterxml\jackson\core\jackson-annotations\2.14.1\jackson-annotations-2.14.1.jar;C:\Users\Administrator\.m2\repository\org\projectlombok\lombok\1.18.30\lombok-1.18.30.jar" com.qf.index.Main
     * 2024-09-18 11:16:17 程序开始了~~~
     * 2024-09-18 11:16:17 数据融合程序开始了~~~
     * [2024-09-18 11:16:17] [DEBUG] cn.hutool.log.LogFactory: Use [Hutool Console Logging] Logger As Default.
     * [2024-09-18 11:16:17] [DEBUG] cn.hutool.setting.SettingLoader: Load setting file [classpath:config/db.setting]
     * [2024-09-18 11:16:17] [DEBUG] cn.hutool.db.DbUtil: Show sql: [false], format sql: [false], show params: [false], level: [DEBUG]
     * [2024-09-18 11:16:17] [DEBUG] cn.hutool.db.ds.DSFactory: Use [HikariCP] DataSource As Default
     * [2024-09-18 11:16:17] [DEBUG] cn.hutool.db.dialect.DialectFactory: Use Dialect: [MysqlDialect].
     * 2024-09-18 11:16:17 读表现在开始：1 总次数：10 表名：scholar_24_09.pm_ut_aid_info_ut 内存申请：87 Gb 空余：76 Gb 获取：87 Gb
     * 2024-09-18 11:17:24 读表现在开始：2 总次数：10 表名：scholar_24_09.pm_ut_aid_info_ut 内存申请：87 Gb 空余：68 Gb 获取：87 Gb
     * 2024-09-18 11:18:29 读表现在开始：3 总次数：10 表名：scholar_24_09.pm_ut_aid_info_ut 内存申请：87 Gb 空余：79 Gb 获取：87 Gb
     * 2024-09-18 11:19:34 读表现在开始：4 总次数：10 表名：scholar_24_09.pm_ut_aid_info_ut 内存申请：87 Gb 空余：70 Gb 获取：87 Gb
     * 2024-09-18 11:20:37 读表现在开始：5 总次数：10 表名：scholar_24_09.pm_ut_aid_info_ut 内存申请：87 Gb 空余：61 Gb 获取：87 Gb
     * 2024-09-18 11:21:42 读表现在开始：6 总次数：10 表名：scholar_24_09.pm_ut_aid_info_ut 内存申请：84 Gb 空余：66 Gb 获取：84 Gb
     * 2024-09-18 11:22:46 读表现在开始：7 总次数：10 表名：scholar_24_09.pm_ut_aid_info_ut 内存申请：84 Gb 空余：68 Gb 获取：84 Gb
     * 2024-09-18 11:23:47 读表现在开始：8 总次数：10 表名：scholar_24_09.pm_ut_aid_info_ut 内存申请：85 Gb 空余：73 Gb 获取：85 Gb
     * 2024-09-18 11:24:50 读表现在开始：9 总次数：10 表名：scholar_24_09.pm_ut_aid_info_ut 内存申请：85 Gb 空余：61 Gb 获取：85 Gb
     * 2024-09-18 11:25:54 读表现在开始：10 总次数：10 表名：scholar_24_09.pm_ut_aid_info_ut 内存申请：85 Gb 空余：66 Gb 获取：85 Gb
     * 2024-09-18 11:28:24 wosAndAutoIdMap.size():90414577
     * 2024-09-18 11:28:24 读表现在开始：1 总次数：10 表名：scholar_24_09.pm_ut_aid_info_cd 内存申请：81 Gb 空余：49 Gb 获取：80 Gb
     * 2024-09-18 11:28:32 读表现在开始：2 总次数：10 表名：scholar_24_09.pm_ut_aid_info_cd 内存申请：85 Gb 空余：69 Gb 获取：85 Gb
     * 2024-09-18 11:28:37 读表现在开始：3 总次数：10 表名：scholar_24_09.pm_ut_aid_info_cd 内存申请：85 Gb 空余：67 Gb 获取：85 Gb
     * 2024-09-18 11:28:41 读表现在开始：4 总次数：10 表名：scholar_24_09.pm_ut_aid_info_cd 内存申请：85 Gb 空余：65 Gb 获取：85 Gb
     * 2024-09-18 11:28:45 读表现在开始：5 总次数：10 表名：scholar_24_09.pm_ut_aid_info_cd 内存申请：85 Gb 空余：63 Gb 获取：85 Gb
     * 2024-09-18 11:28:48 读表现在开始：6 总次数：10 表名：scholar_24_09.pm_ut_aid_info_cd 内存申请：85 Gb 空余：60 Gb 获取：85 Gb
     * 2024-09-18 11:28:52 读表现在开始：7 总次数：10 表名：scholar_24_09.pm_ut_aid_info_cd 内存申请：85 Gb 空余：58 Gb 获取：85 Gb
     * 2024-09-18 11:28:55 读表现在开始：8 总次数：10 表名：scholar_24_09.pm_ut_aid_info_cd 内存申请：85 Gb 空余：55 Gb 获取：85 Gb
     * 2024-09-18 11:28:58 读表现在开始：9 总次数：10 表名：scholar_24_09.pm_ut_aid_info_cd 内存申请：85 Gb 空余：53 Gb 获取：85 Gb
     * 2024-09-18 11:29:02 读表现在开始：10 总次数：10 表名：scholar_24_09.pm_ut_aid_info_cd 内存申请：85 Gb 空余：69 Gb 获取：85 Gb
     * 2024-09-18 11:29:08 cscdAndAutoIdMap.size():6302753
     * 2024-09-18 11:29:08 读表现在开始：1 总次数：10 表名：scholar_24_09.pm_ut_aid_info_pm 内存申请：85 Gb 空余：66 Gb 获取：85 Gb
     * 2024-09-18 11:29:35 读表现在开始：2 总次数：10 表名：scholar_24_09.pm_ut_aid_info_pm 内存申请：85 Gb 空余：60 Gb 获取：85 Gb
     * 2024-09-18 11:30:01 读表现在开始：3 总次数：10 表名：scholar_24_09.pm_ut_aid_info_pm 内存申请：85 Gb 空余：55 Gb 获取：85 Gb
     * 2024-09-18 11:30:28 读表现在开始：4 总次数：10 表名：scholar_24_09.pm_ut_aid_info_pm 内存申请：85 Gb 空余：66 Gb 获取：85 Gb
     * 2024-09-18 11:30:57 读表现在开始：5 总次数：10 表名：scholar_24_09.pm_ut_aid_info_pm 内存申请：85 Gb 空余：60 Gb 获取：85 Gb
     * 2024-09-18 11:31:24 读表现在开始：6 总次数：10 表名：scholar_24_09.pm_ut_aid_info_pm 内存申请：85 Gb 空余：55 Gb 获取：85 Gb
     * 2024-09-18 11:31:51 读表现在开始：7 总次数：10 表名：scholar_24_09.pm_ut_aid_info_pm 内存申请：85 Gb 空余：49 Gb 获取：85 Gb
     * 2024-09-18 11:32:18 读表现在开始：8 总次数：10 表名：scholar_24_09.pm_ut_aid_info_pm 内存申请：85 Gb 空余：60 Gb 获取：85 Gb
     * 2024-09-18 11:32:44 读表现在开始：9 总次数：10 表名：scholar_24_09.pm_ut_aid_info_pm 内存申请：85 Gb 空余：54 Gb 获取：85 Gb
     * 2024-09-18 11:33:09 读表现在开始：10 总次数：10 表名：scholar_24_09.pm_ut_aid_info_pm 内存申请：85 Gb 空余：48 Gb 获取：85 Gb
     * 2024-09-18 11:33:58 pmIdAndAutoIdMap.size():37557184
     * 2024-09-18 11:33:58 读表现在开始：1 总次数：10 表名：scholar_24_09.basic_core_paper_quota 内存申请：86 Gb 空余：61 Gb 获取：86 Gb
     * 2024-09-18 11:33:58 读表现在开始：2 总次数：10 表名：scholar_24_09.basic_core_paper_quota 内存申请：86 Gb 空余：60 Gb 获取：86 Gb
     * 2024-09-18 11:33:58 读表现在开始：3 总次数：10 表名：scholar_24_09.basic_core_paper_quota 内存申请：86 Gb 空余：60 Gb 获取：86 Gb
     * 2024-09-18 11:33:59 读表现在开始：4 总次数：10 表名：scholar_24_09.basic_core_paper_quota 内存申请：86 Gb 空余：59 Gb 获取：86 Gb
     * 2024-09-18 11:33:59 读表现在开始：5 总次数：10 表名：scholar_24_09.basic_core_paper_quota 内存申请：86 Gb 空余：57 Gb 获取：86 Gb
     * 2024-09-18 11:34:00 读表现在开始：6 总次数：10 表名：scholar_24_09.basic_core_paper_quota 内存申请：86 Gb 空余：56 Gb 获取：86 Gb
     * 2024-09-18 11:34:09 读表现在开始：7 总次数：10 表名：scholar_24_09.basic_core_paper_quota 内存申请：86 Gb 空余：50 Gb 获取：86 Gb
     * 2024-09-18 11:34:21 读表现在开始：8 总次数：10 表名：scholar_24_09.basic_core_paper_quota 内存申请：86 Gb 空余：61 Gb 获取：86 Gb
     * 2024-09-18 11:34:30 读表现在开始：9 总次数：10 表名：scholar_24_09.basic_core_paper_quota 内存申请：86 Gb 空余：55 Gb 获取：86 Gb
     * 2024-09-18 11:34:43 读表现在开始：10 总次数：10 表名：scholar_24_09.basic_core_paper_quota 内存申请：86 Gb 空余：52 Gb 获取：86 Gb
     * 2024-09-18 11:34:58 referenceQuotaMap.size():61551648
     * 2024-09-18 11:34:58 读表现在开始：1 总次数：10 表名：scholar_24_09.basic_jour_merge 内存申请：87 Gb 空余：45 Gb 获取：87 Gb
     * 2024-09-18 11:34:58 读表现在开始：2 总次数：10 表名：scholar_24_09.basic_jour_merge 内存申请：87 Gb 空余：45 Gb 获取：87 Gb
     * 2024-09-18 11:34:58 读表现在开始：3 总次数：10 表名：scholar_24_09.basic_jour_merge 内存申请：87 Gb 空余：45 Gb 获取：87 Gb
     * 2024-09-18 11:34:59 读表现在开始：4 总次数：10 表名：scholar_24_09.basic_jour_merge 内存申请：87 Gb 空余：45 Gb 获取：87 Gb
     * 2024-09-18 11:34:59 读表现在开始：5 总次数：10 表名：scholar_24_09.basic_jour_merge 内存申请：87 Gb 空余：45 Gb 获取：87 Gb
     * 2024-09-18 11:34:59 读表现在开始：6 总次数：10 表名：scholar_24_09.basic_jour_merge 内存申请：87 Gb 空余：45 Gb 获取：87 Gb
     * 2024-09-18 11:34:59 读表现在开始：7 总次数：10 表名：scholar_24_09.basic_jour_merge 内存申请：87 Gb 空余：45 Gb 获取：87 Gb
     * 2024-09-18 11:34:59 jidInfoMap.size():83853
     * 2024-09-18 11:34:59 读表现在开始：1 总次数：10 表名：scholar_24_09.basic_core_paper 内存申请：87 Gb 空余：45 Gb 获取：87 Gb
     * 2024-09-18 12:49:25 读表现在开始：2 总次数：10 表名：scholar_24_09.basic_core_paper 内存申请：88 Gb 空余：57 Gb 获取：88 Gb
     * 2024-09-18 14:06:04 读表现在开始：3 总次数：10 表名：scholar_24_09.basic_core_paper 内存申请：90 Gb 空余：40 Gb 获取：90 Gb
     * 2024-09-18 15:20:27 读表现在开始：4 总次数：10 表名：scholar_24_09.basic_core_paper 内存申请：90 Gb 空余：49 Gb 获取：90 Gb
     * 2024-09-18 16:35:14 读表现在开始：5 总次数：10 表名：scholar_24_09.basic_core_paper 内存申请：91 Gb 空余：37 Gb 获取：91 Gb
     * 2024-09-18 17:50:49 读表现在开始：6 总次数：10 表名：scholar_24_09.basic_core_paper 内存申请：91 Gb 空余：60 Gb 获取：91 Gb
     * 2024-09-18 19:06:56 读表现在开始：7 总次数：10 表名：scholar_24_09.basic_core_paper 内存申请：91 Gb 空余：53 Gb 获取：91 Gb
     * 2024-09-18 20:23:26 读表现在开始：8 总次数：10 表名：scholar_24_09.basic_core_paper 内存申请：91 Gb 空余：44 Gb 获取：91 Gb
     * 2024-09-18 21:42:10 读表现在开始：9 总次数：10 表名：scholar_24_09.basic_core_paper 内存申请：91 Gb 空余：37 Gb 获取：91 Gb
     * 2024-09-18 23:01:31 读表现在开始：10 总次数：10 表名：scholar_24_09.basic_core_paper 内存申请：91 Gb 空余：59 Gb 获取：91 Gb
     * 2024-09-19 00:21:35 数据融合程序结束了~~~
     * 2024-09-19 00:21:35 程序全部结束，总用时：47117601 ms。
     * [2024-09-19 00:21:35] [DEBUG] cn.hutool.db.ds.GlobalDSFactory$1: DataSource: [HikariCP] destroyed.
     *
     * 进程已结束，退出代码为 0
     */

    /**
     * 2025-03-07 22:09:11 数据融合① wosAndAutoIdMap.size():27602123
     * 2025-03-07 22:09:15 数据融合② cscdAndAutoIdMap.size():1964318
     * 2025-03-07 22:09:41 数据融合③ pmIdAndAutoIdMap.size():11419800
     * 2025-03-07 22:10:01 数据融合④ referenceQuotaMap.size():18198113
     * 2025-03-07 22:10:02 数据融合⑤ jidInfoMap.size():25200
     * 2025-03-07 22:27:15 数据插入⑴ wordAndCodeSetMap.size():77420
     * dataIdAndAidMap.size(): 7236006
     * 2025-03-07 23:14:32 数据插入⑵ 表名: scholar_25_02.spider_tb_true_92007022_1125 结束了。
     * dataIdAndAidMap.size(): 2632875
     * 2025-03-07 23:22:11 数据插入⑶ 表名: scholar_25_02.spider_pubmed_vip_extend 结束了。
     * dataIdAndAidMap.size(): 550177
     * 2025-03-07 23:27:07 数据插入⑷ 表名: scholar_25_02.spider_cn_core 结束了。
     * dataIdAndAidMap.size(): 320437
     * 2025-03-07 23:29:03 数据插入⑸ 表名: scholar_25_02.spider_yiigle_analysis 结束了。
     * dataIdAndAidMap.size(): 4493447
     * 2025-03-07 23:33:59 数据插入⑹ 表名: scholar_25_02.spider_cnki_analysis 结束了。
     * dataIdAndAidMap.size(): 1041381
     * 2025-03-07 23:53:52 数据插入⑺ 表名: scholar_25_02.spider_wanfang_analysis 结束了。
     * dataIdAndAidMap.size(): 1338227
     * 2025-03-07 23:58:06 数据插入⑻ 表名: scholar_25_02.spider_cqvip_analysis 结束了。
     * 2025-03-07 23:58:24 ⑼ 更新作者，现在开始：1 总次数：10 表名：scholar_25_02.unified_search_summary_0307 内存申请：110 Gb 空余：74 Gb 获取：110 Gb
     * 2025-03-08 00:18:18 ⑼ 更新作者，现在开始：2 总次数：10 表名：scholar_25_02.unified_search_summary_0307 内存申请：110 Gb 空余：58 Gb 获取：110 Gb
     * 2025-03-08 00:37:44 ⑼ 更新作者，现在开始：3 总次数：10 表名：scholar_25_02.unified_search_summary_0307 内存申请：110 Gb 空余：61 Gb 获取：110 Gb
     * 2025-03-08 00:56:50 ⑼ 更新作者，现在开始：4 总次数：10 表名：scholar_25_02.unified_search_summary_0307 内存申请：110 Gb 空余：32 Gb 获取：110 Gb
     * 2025-03-08 01:16:38 ⑼ 更新作者，现在开始：5 总次数：10 表名：scholar_25_02.unified_search_summary_0307 内存申请：110 Gb 空余：56 Gb 获取：110 Gb
     * 2025-03-08 01:39:26 ⑼ 更新作者，现在开始：6 总次数：10 表名：scholar_25_02.unified_search_summary_0307 内存申请：110 Gb 空余：28 Gb 获取：110 Gb
     * 2025-03-08 02:01:27 ⑼ 更新作者，现在开始：7 总次数：10 表名：scholar_25_02.unified_search_summary_0307 内存申请：110 Gb 空余：22 Gb 获取：110 Gb
     * 2025-03-08 02:23:20 ⑼ 更新作者，现在开始：8 总次数：10 表名：scholar_25_02.unified_search_summary_0307 内存申请：110 Gb 空余：64 Gb 获取：110 Gb
     * 2025-03-08 02:45:02 ⑼ 更新作者，现在开始：9 总次数：10 表名：scholar_25_02.unified_search_summary_0307 内存申请：110 Gb 空余：57 Gb 获取：110 Gb
     * 2025-03-08 03:06:53 ⑼ 更新作者，现在开始：10 总次数：10 表名：scholar_25_02.unified_search_summary_0307 内存申请：110 Gb 空余：74 Gb 获取：110 Gb
     * 2025-03-08 03:45:15 ⑽ 更新关键词，现在开始：1 总次数：10 表名：scholar_25_02.unified_search_summary_0307 内存申请：110 Gb 空余：33 Gb 获取：110 Gb
     * 2025-03-08 04:16:14 ⑽ 更新关键词，现在开始：2 总次数：10 表名：scholar_25_02.unified_search_summary_0307 内存申请：110 Gb 空余：51 Gb 获取：110 Gb
     * 2025-03-08 04:50:19 ⑽ 更新关键词，现在开始：3 总次数：10 表名：scholar_25_02.unified_search_summary_0307 内存申请：110 Gb 空余：39 Gb 获取：110 Gb
     * 2025-03-08 05:23:53 ⑽ 更新关键词，现在开始：4 总次数：10 表名：scholar_25_02.unified_search_summary_0307 内存申请：110 Gb 空余：35 Gb 获取：110 Gb
     * 2025-03-08 05:57:59 ⑽ 更新关键词，现在开始：5 总次数：10 表名：scholar_25_02.unified_search_summary_0307 内存申请：110 Gb 空余：27 Gb 获取：110 Gb
     * 2025-03-08 06:31:27 ⑽ 更新关键词，现在开始：6 总次数：10 表名：scholar_25_02.unified_search_summary_0307 内存申请：110 Gb 空余：24 Gb 获取：110 Gb
     * 2025-03-08 07:06:11 ⑽ 更新关键词，现在开始：7 总次数：10 表名：scholar_25_02.unified_search_summary_0307 内存申请：110 Gb 空余：76 Gb 获取：110 Gb
     * 2025-03-08 07:39:46 ⑽ 更新关键词，现在开始：8 总次数：10 表名：scholar_25_02.unified_search_summary_0307 内存申请：110 Gb 空余：64 Gb 获取：110 Gb
     * 2025-03-08 08:13:56 ⑽ 更新关键词，现在开始：9 总次数：10 表名：scholar_25_02.unified_search_summary_0307 内存申请：110 Gb 空余：86 Gb 获取：110 Gb
     * 2025-03-08 08:49:13 ⑽ 更新关键词，现在开始：10 总次数：10 表名：scholar_25_02.unified_search_summary_0307 内存申请：110 Gb 空余：51 Gb 获取：110 Gb
     * 2025-03-08 09:30:54 ⑿ 更新四项值，现在开始：1 总次数：10 表名：scholar_25_02.unified_search_summary_0307 内存申请：102 Gb 空余：58 Gb 获取：102 Gb
     * 2025-03-08 09:32:20 ⑿ 更新四项值，现在开始：2 总次数：10 表名：scholar_25_02.unified_search_summary_0307 内存申请：106 Gb 空余：58 Gb 获取：106 Gb
     * 2025-03-08 09:33:39 ⑿ 更新四项值，现在开始：3 总次数：10 表名：scholar_25_02.unified_search_summary_0307 内存申请：107 Gb 空余：57 Gb 获取：107 Gb
     * 2025-03-08 09:35:05 ⑿ 更新四项值，现在开始：4 总次数：10 表名：scholar_25_02.unified_search_summary_0307 内存申请：107 Gb 空余：57 Gb 获取：107 Gb
     * 2025-03-08 09:36:27 ⑿ 更新四项值，现在开始：5 总次数：10 表名：scholar_25_02.unified_search_summary_0307 内存申请：108 Gb 空余：61 Gb 获取：108 Gb
     * 2025-03-08 09:37:58 ⑿ 更新四项值，现在开始：6 总次数：10 表名：scholar_25_02.unified_search_summary_0307 内存申请：108 Gb 空余：33 Gb 获取：108 Gb
     * 2025-03-08 09:39:23 ⑿ 更新四项值，现在开始：7 总次数：10 表名：scholar_25_02.unified_search_summary_0307 内存申请：108 Gb 空余：37 Gb 获取：108 Gb
     * 2025-03-08 09:40:44 ⑿ 更新四项值，现在开始：8 总次数：10 表名：scholar_25_02.unified_search_summary_0307 内存申请：109 Gb 空余：44 Gb 获取：109 Gb
     * 2025-03-08 09:42:09 ⑿ 更新四项值，现在开始：9 总次数：10 表名：scholar_25_02.unified_search_summary_0307 内存申请：109 Gb 空余：51 Gb 获取：109 Gb
     * 2025-03-08 09:43:37 ⑿ 更新四项值，现在开始：10 总次数：10 表名：scholar_25_02.unified_search_summary_0307 内存申请：109 Gb 空余：59 Gb 获取：109 Gb
     * 2025-03-08 09:45:17 ⒀ 插入分类表，现在开始：1 总次数：10 表名：scholar_25_02.unified_search_summary_0307 内存申请：110 Gb 空余：34 Gb 获取：110 Gb
     * 2025-03-08 09:45:44 ⒀ 插入分类表，现在开始：2 总次数：10 表名：scholar_25_02.unified_search_summary_0307 内存申请：109 Gb 空余：54 Gb 获取：109 Gb
     * 2025-03-08 09:46:11 ⒀ 插入分类表，现在开始：3 总次数：10 表名：scholar_25_02.unified_search_summary_0307 内存申请：109 Gb 空余：40 Gb 获取：109 Gb
     * 2025-03-08 09:46:37 ⒀ 插入分类表，现在开始：4 总次数：10 表名：scholar_25_02.unified_search_summary_0307 内存申请：110 Gb 空余：60 Gb 获取：110 Gb
     * 2025-03-08 09:47:02 ⒀ 插入分类表，现在开始：5 总次数：10 表名：scholar_25_02.unified_search_summary_0307 内存申请：110 Gb 空余：46 Gb 获取：110 Gb
     * 2025-03-08 09:47:27 ⒀ 插入分类表，现在开始：6 总次数：10 表名：scholar_25_02.unified_search_summary_0307 内存申请：110 Gb 空余：31 Gb 获取：110 Gb
     * 2025-03-08 09:47:54 ⒀ 插入分类表，现在开始：7 总次数：10 表名：scholar_25_02.unified_search_summary_0307 内存申请：110 Gb 空余：52 Gb 获取：110 Gb
     * 2025-03-08 09:48:20 ⒀ 插入分类表，现在开始：8 总次数：10 表名：scholar_25_02.unified_search_summary_0307 内存申请：110 Gb 空余：37 Gb 获取：110 Gb
     * 2025-03-08 09:48:47 ⒀ 插入分类表，现在开始：9 总次数：10 表名：scholar_25_02.unified_search_summary_0307 内存申请：110 Gb 空余：58 Gb 获取：110 Gb
     * 2025-03-08 09:49:13 ⒀ 插入分类表，现在开始：10 总次数：10 表名：scholar_25_02.unified_search_summary_0307 内存申请：110 Gb 空余：43 Gb 获取：110 Gb
     * 2025-03-08 10:13:04 ⒁ 更新被引第一次，表名：scholar_25_02.basic_core_paper_citation 内存申请：106 Gb 空余：72 Gb 获取：106 Gb
     * 2025-03-08 10:29:58 ⒁ 更新被引第二次，表名：scholar_25_02.basic_core_paper_citation 内存申请：106 Gb 空余：25 Gb 获取：106 Gb
     * 2025-03-08 10:54:16 ⒁ 更新被引第三次，表名：scholar_25_02.basic_core_paper_citation 内存申请：106 Gb 空余：40 Gb 获取：106 Gb
     * 2025-03-08 11:18:54 ⒁ 更新被引第四次，表名：scholar_25_02.basic_core_paper_citation 内存申请：106 Gb 空余：58 Gb 获取：106 Gb
     * 2025-03-08 13:04:58 ⒂ 执行sql语句第一次结束。
     * 2025-03-08 15:13:59 ⒂ 执行sql语句第二次结束。
     * 2025-03-08 15:15:29 ⒃ 读取doi的下一跳结束，doiAndLocationMap.size()：63956027 内存申请：103 Gb 空余：36 Gb 获取：103 Gb
     * 2025-03-08 15:23:12 ⒄ 读取pm的ad信息结束，pmIdAndAdListMap.size()：26728869 内存申请：110 Gb 空余：72 Gb 获取：110 Gb
     * 2025-03-08 15:29:38 ⒅ 读取参文信息结束，aidAndReferencesMap.size()：17612550 内存申请：109 Gb 空余：48 Gb 获取：109 Gb
     * 2025-03-08 16:06:23 ⒆ 更新参文等七项数据结束 内存申请：110 Gb 空余：57 Gb 获取：110 Gb
     */


}
